Serverless Meetup Japan Virtual Vol.3 で AWS Glue Table と Amazon Athena を使った軽量なサーバーレスETLの話をしました #serverlessjp
2020年7月29日(水)、オンラインイベント Serverless Meetup Japan Virtual #3 が開催されました。
こちら Meetup ということで参加する際に Meetup枠が用意されており、セッションへの質問やガヤで盛り上がれるのが特徴です。そんなイベントで、AWS にて AWS Glue や Amazon Athena をつかった軽量なETLについて話してきました。
登壇資料
発表のポイント
AWSでETLといえばGlueだけど…
AWS Glue って、名前は結構聞くし、AWSコンソールから覗いたこともあるけれど、イマイチ一言で表すのが難しいな…という思い出があり、まず AWS Glue と Amazon Athena の関係 に焦点を当て、実際のところどういうサービスなのかを明らかにしました。
ETLユースケース:イベントサイトのバックエンド構築
ETLを使うユースケースとして、勉強会などのイベント管理サービスのバックエンドを考えます。2つの別のサービス、(1)セッション公募サービス(Google Formなど)と (2)チケット発行サービスからそれぞれ出力されたCSVデータをメールアドレスでJOINする状況を考えます。
今回は、 (1)と(2)2つのCSVファイルを合成(JOIN)し、ひとつの合成済みS3オブジェクトを生成、APIリクエスト時はそのS3オブジェクトに S3 Select をかける という方針にします。
ということで、冒頭で説明した Glue Job と Glue Workflow を使ってETLを組み上げる!…といきたいところなんですが、 Glue Job と Glue Workflow は今回は使いません。代わりに、 Amazon Athena でクエリ + Lambda Function で実行、さらに一連の処理を AWS Step Functions で組み立てることとします。
イベント管理サービスの規模だと、ひとつのイベントに登録するユーザーの数(つまりCSVファイルの行数)はたかだか数千、いって数万かと思います。このくらいの規模だと、分析用途を想定した Glue Job では課金額と起動時間がネックになってしまいます。そこで、Glue Table + Amazon Athena + Lambda Function でのETLを検討したというわけです。
CDKでAWSリソース作成
利用するAWS構成パターンと大まかなロジックが決まったら、具体的にどうやって AWS リソースを作っていくか議論ができます。本当はこの AWS CDK についてたくさん話したいところはあるのですが、それはクラスメソッドのイベント Developers.IO Connect での発表内容にまかせます。
- 実践プロダクションサーバーレス - AWS CDK と TypeScript によるWebアプリケーション開発パターン
- 登壇資料:Speaker Deck
- セッションの録画:YouTube クラスメソッドチャンネル アーカイブ
今回、Serverless Meetup では、リソースを組み立てるイメージをもってもらうため、主に Glue Table, S3 Bucket, Lambda Functions の AWS CDK サンプルを載せました。
セッションのまとめ
AWS はいろいろなサービスがありますが、ユースケースと要件を整理すれば、「なんとなくこういうサービスがあてはまりそう」というイメージが湧いてきます。今回はファイルの変換処理ということで、AWS Glue について改めて調査、実体を明らかにしました。このように実体を調べておくと、AWS は本当にいろいろなケースを考慮して組み合わせられるよう設計されています。典型的な Glue Table + Glue Job + Glow Workflow という組み合わせも捨てがたいですが、軽量なETLでは Lambda Function も選択肢としてアリです。サービスの実体を知ることで、どういう組み合わせが使えるかということもわかるので、要件にマッチしたアーキテクチャを組める確率があがります。
社内やMeetup…アーキテクチャに困ったり、組み合わせで悩んだらぜひ一緒に議論しましょう!
Serverless Meetup Japan Virtual #3 その他関連資料
クラウドエース五十嵐さんによる GCP の Serverless Network Endpoint Groups (NEG)
Toggetter
セッション動画アーカイブ
@michimani210 さんによる参加レポート
レポートありがとうございます。
AWS Glue の参考にさせていただいた資料
- AWS Blackbelt: [AWS Black Belt Online Seminar] AWS Glue 資料及び QA 公開 | Amazon Web Services ブログ
- 新井さんの登壇資料: 「AWS Glueを使った Serverless ETL の実装パターン」について発表しました #devio2020 | Developers.IO
Serverless Meetup Japan Virtual #4 募集中です!
視聴枠はもちろん、いろいろ質問したりできる Meetup枠もどしどしご参加ください。